﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp4
{
    class Program
    {
        static void Main(string[] args)
        {


            text2();
        }
        static void text1()
        {
            //            第一题：
            //一个考试管理系统，需要录入考生成绩，只能录入数字，否则会报类型转换异常。
            //请编写相关代码，
            //1、捕获FormatException异常，并打印输出“异常已处理；
            //2、捕获OverflowException异常，数值超出float范围的异常，并打印输出“异常已处理；
            //3、捕获一般异常Exception异常。
            //4、最终处理finally
            //录入成绩结束后，请输出，总学生数，总分数，平均分
            float[] array = new float[6];
            int a = 0;
            float sum = 0;
            try
            {
                for (int i = 0; i < array.Length; i++)
                {
                    Console.WriteLine("请输入考生成绩");
                    array[i] = float.Parse(Console.ReadLine());
                }
            }
            catch (FormatException e)
            {
                Console.WriteLine(e.Message);
                Console.WriteLine("异常已处理");
                Console.WriteLine(111111);
            }
            catch (OverflowException e)
            {
                Console.WriteLine(e.Message);

                Console.WriteLine("异常已处理");
                Console.WriteLine(22222);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);

                Console.WriteLine("异常已处理");
                Console.WriteLine(333333);
            }
            finally
            {
                foreach (var i in array)
                {
                    a++;
                    sum = i + sum;

                }
                Console.WriteLine("总学生数" + a);
                Console.WriteLine("总分数" + sum);
                Console.WriteLine("平均分" + sum / 6);

            }
            Console.WriteLine("1.重新添加    2.停止添加");
            int num = Convert.ToInt32(Console.ReadLine());
            switch (num)
            {
                case 1:
                    text1();
                    break;
                case 2:
                    System.Environment.Exit(0);
                    break;
                default:
                    break;
            }
        }
        static void text2()
        {

            //            第二题：

            //编写一个程序，用以接收用户输入的两个浮点型的数值，一个值表示用户想要存放在银行账户中的余额，
            //另一个值表示用户想要从银行账户中提取的金额。
            //实现存取款功能，
            //用户功能选择：1、存款，2、取款
            //取款时：
            //当用户想要提取的金额大于余额时，请手动抛出一个ArgumentOutOfRangeException 参数超出范围的异常，
            //异常信息可以写“取款金额大于余额，请重新输入”
            //，如此以确保取款金额始终不大于当前余额。
            //操作结束，打印输出余额是多少。
            //最后再添加catch一般异常 Exception，使得数据类型转换的异常也能被捕获到。
            double deposit = 1000000;
            Console.WriteLine("1、存款，2、取款");
            int num = int.Parse(Console.ReadLine());
            switch (num)
            {
                case 1:
                    try
                    {
                        Console.WriteLine("请输入存款金额");
                        double money = double.Parse(Console.ReadLine());
                        deposit = money + deposit;
                    }
                    catch (Exception e )
                    {
                        Console.WriteLine(e.Message);
                        Console.WriteLine("捕获到数据转换异常异常");
                    }
                    finally
                    {
                        Console.WriteLine("余额为"+deposit);
                        text2();
                    }
                  

                    break;
                case 2:
                    try
                    {
                        Console.WriteLine("请输入取款金额");
                        float money2 = float.Parse(Console.ReadLine());
                        if (money2>deposit)
                        {
                            throw new AccessViolationException("取款金额大于余额，请重新输入");
                        }
                        else
                        {
                            Console.WriteLine("余额为" + (deposit-money2));
                            text2();
                        }
                    }
                    finally
                    {

                        text2();
                    }

                    break;

                default:
                    break;
            }
        }

    }
}
